草庐IT

pointers - 指针问题

全部标签

pointers - 我如何在 Go 中做一个文字 *int64?

我有一个带有*int64的结构类型field。typeSomeTypestruct{SomeField*int64}在我的代码中的某个时候,我想声明一个文字(比如,当我知道所说的值应该是0,或者指向0时,你知道我的意思)instance:=SomeType{SomeField:&0,}...除了这不起作用./main.go:xx:cannotuse&0(type*int)astype*int64infieldvalue所以我试试这个instance:=SomeType{SomeField:&int64(0),}...但这也不起作用./main.go:xx:cannottakethead

SelectInt gorp 上的 MySQL NULL 值问题

我正在尝试使用带有mysql的gorp库运行以下查询query="SELECTSUM(outputoctets)FROMmonthlyacctwheredate>=?ANDdate此查询抛出以下错误,Scanerroroncolumnindex0:convertingstring\"\u003cnil\u003e\"toaint64:strconv.ParseInt:parsing\"\u003cnil\u003e\":invalidsyntax这里的列outputoctets是BIGINT类型。我还尝试将SelectInt更改为SelectStr,然后它抛出了以下错误;Scanerr

pointers - 隐藏 nil 值,理解为什么 golang 在这里失败

我不明白如何正确确保某些东西不是nil在这种情况下:packagemaintypeshowerinterface{getWater()[]shower}typedisplaystruct{SubDisplay*display}func(ddisplay)getWater()[]shower{return[]shower{display{},d.SubDisplay}}funcmain(){//SubDisplaywillbeinitializedwithnulls:=display{}//water:=[]shower{nil}water:=s.getWater()for_,x:=ra

pointers - 指针问题

TL;DR不知何故,我将一个指针append到列表而不是对象的for循环中的对象,所以最后整个slice多次由同一个对象组成。我只是不知道如何解决这个问题。漫漫长路我仍然很难在go中找出指针。我昨天发布了一个问题并得到了一些帮助,但现在我在同一段代码中遇到了一个稍微不同的问题。我正在使用gocql和cqlrgo包来尝试为我的Cassandra查询编写一个小型对象映射器。从本质上讲,我遇到的问题是我将似乎是指向对象的指针,而不是obj的新实例append到数组中。我该如何解决?我尝试在value前面添加&和*但这似乎不起作用。我该如何解决这些问题?根据他们的文档,绑定(bind)函数需要

pointers - 隐藏 nil 值,理解为什么 golang 在这里失败

我不明白如何正确确保某些东西不是nil在这种情况下:packagemaintypeshowerinterface{getWater()[]shower}typedisplaystruct{SubDisplay*display}func(ddisplay)getWater()[]shower{return[]shower{display{},d.SubDisplay}}funcmain(){//SubDisplaywillbeinitializedwithnulls:=display{}//water:=[]shower{nil}water:=s.getWater()for_,x:=ra

pointers - 隐藏 nil 值,理解为什么 golang 在这里失败

我不明白如何正确确保某些东西不是nil在这种情况下:packagemaintypeshowerinterface{getWater()[]shower}typedisplaystruct{SubDisplay*display}func(ddisplay)getWater()[]shower{return[]shower{display{},d.SubDisplay}}funcmain(){//SubDisplaywillbeinitializedwithnulls:=display{}//water:=[]shower{nil}water:=s.getWater()for_,x:=ra

go - 构建 Go 1.6 的问题

我正在尝试在linux中构建和安装go1.6。(amd64)。我已经安装了go1.42。我不断收到错误消息:构建dist时不允许导入周期。我已经从/usr/lib/golang/bin/go链接到/usr/bin。我设置了GOROOT_BOOTSTRAP=/usrGOARCH="amd64"GOBIN=""GOCHAR="6"GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOOS="linux"GOPATH="/usr/share/gocode"GORACE=""GOTOOLDIR="/usr/bin/pkg/tool/linux_amd64"GO

pointers - 通过将指针传递给 Go 中的函数来获取不同的值

假设我想将一个指针传递给一个函数,并通过这样做更改该指针指向的结构的值。我通常会通过取消引用指针来做到这一点:typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//4}funcf(p*Test){*p=Test{4}}我的问题是,为什么这段代码没有改变值typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//2}funcf(p*Test){//?p=&Test

database - 带有 golang 的 Postgresql,问题

我创建了一个使用golang和postgresql作为数据库的API。在多次请求后,API崩溃并显示错误500并显示pq:sorry,toomanycustomersalready一开始是因为我选择的时候没有关闭行,所以我有rows.close()。但这不是因为我已经有这个错误了。然后看到启动数据库只需要3ms,我想我应该在每次请求时启动和关闭数据库以重置所有连接,不过仔细想想,这是无稽之谈。所以我问你,这个错误是如何产生的,是客户端连接在一定时间后重置还是连接被切断,直到客户端为客户端重新启动服务器?如果在一定时间后重置,增加最大客户端连接数有什么缺点?我的代码:我在程序开始时像这样

go - 接口(interface)依赖注入(inject)问题

我有提供一些tcp连接工作的包,基本上是这样的:packageconnpoolimport("io/ioutil""net/http")typeConnPoolstruct{}func(pool*ConnPool)GetConn()Conn{returnConn{}}func(pool*ConnPool)ReleaseConnection(connConn){}typeConnstruct{}func(cConn)FetchUrl(urlstring)([]byte,error){req,err:=http.NewRequest("GET",url,nil)iferr!=nil{ret